/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

import controller.AtividadeDAO;
import java.util.ArrayList;
import java.util.Date;
import utils.DataUtils;
import utils.conexao.Entity;
import utils.conexao.Id;
import utils.enums.projeto.SituacaoProjeto;
import utils.enums.projeto.StatusProjeto;

/**
 *
 * @author Oliver Kraemer
 */
public class Projeto extends Entity {
    
    @Id
    private int id;
    
    private String nome;
    private String descricao;

    private Date dataEntrega = new Date();
    private Date dataInicio = new Date();
    
    private StatusProjeto status = StatusProjeto.NAO_INICIADO;
    private SituacaoProjeto situacao = SituacaoProjeto.ANALISE_NEGOCIO;
    
    private Cliente cliente;

    @Override
    public int getId() {
        return this.id;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the dataEntrega
     */
    public Date getDataEntrega() {
        return dataEntrega;
    }

    /**
     * @param dataEntrega the dataEntrega to set
     */
    public void setDataEntrega(Date dataEntrega) {
        this.dataEntrega = dataEntrega;
    }

    /**
     * @return the dataInicio
     */
    public Date getDataInicio() {
        return dataInicio;
    }

    /**
     * @param dataInicio the dataInicio to set
     */
    public void setDataInicio(Date dataInicio) {
        this.dataInicio = dataInicio;
    }

    /**
     * @return the status
     */
    public StatusProjeto getStatus() {
        return status;
    }

    /**
     * @param status the status to set
     */
    public void setStatus(StatusProjeto status) {
        this.status = status;
    }

    /**
     * @return the situacao
     */
    public SituacaoProjeto getSituacao() {
        return situacao;
    }

    /**
     * @param situacao the situacao to set
     */
    public void setSituacao(SituacaoProjeto situacao) {
        this.situacao = situacao;
    }

    /**
     * @return the cliente
     */
    public Cliente getCliente() {
        return cliente;
    }

    /**
     * @param cliente the cliente to set
     */
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public int getQuantidadeDias() {
        return DataUtils.DiferencaData(this.dataEntrega, this.dataInicio);
    }

    public ArrayList<Atividade> getAtividades() {
        return AtividadeDAO.getAtividades(this.getId());
    }

}